import { app, BrowserWindow, ipcMain } from 'electron'
import { electronApp, optimizer } from '@electron-toolkit/utils'
import dotenv from 'dotenv'
import { createTray } from './tray'
import { createWindow as createMainWindow ,width as mainWidth,height  as mainHeight} from './mainWindow'
import { createWindow as createLoginWindow,width as loginWidth,height  as loginHeight} from './loginWindow'
// 加载环境变量
dotenv.config({ path: `.env.${process.env.NODE_ENV || 'development'}` })
let mainWindow
let loginWindow
let tray

// 当 Electron 完成初始化并准备创建浏览器窗口时，将调用此方法。
// 只有在此事件发生后，某些 API 才可以使用。
app.whenReady().then(() => {
  // 为 Windows 设置应用程序用户模型 ID
  electronApp.setAppUserModelId('com.electron')

  // 在开发过程中通过 F12 默认打开或关闭 DevTools，
  // 在生产中忽略 CommandOrControl + R。
  // 参见 https://github.com/alex8088/electron-toolkit/tree/master/packages/utils
  app.on('browser-window-created', (_, window) => {
    optimizer.watchWindowShortcuts(window)
  })

  mainWindow = createMainWindow()
  tray = createTray()

  // 监听打开登录页面
  ipcMain.on('openLogin',  () => {
    // 关闭主窗口
    if (mainWindow) {
      mainWindow.close()
      mainWindow = null
    }

    if (!loginWindow) {
      loginWindow =createLoginWindow() // 如果主窗口不存在，则创建主窗口
    }
  })

  // 监听进入主页
  ipcMain.on('openHome',  () => {
    if (loginWindow) {
      loginWindow.close()
      loginWindow = null
    }

    if (!mainWindow) {
      mainWindow =createMainWindow() // 如果主窗口不存在，则创建主窗口
    }
  })

  // 退出应用
  ipcMain.on('quitApp',  () => {
    app.quit()
  })
  //主窗口窗口
  ipcMain.on('close-main', () => {
    if(mainWindow){
      mainWindow.close();
      mainWindow = null
    }
  });
  ipcMain.on('minimize-main', () => {
    if(mainWindow){
      mainWindow.minimize();
    }
  });
  ipcMain.on('maximize-main', () => {
    if(mainWindow){
      mainWindow.maximize();
    }
  });

  ipcMain.on('move-main', (event, res) => {
    setImmediate(() => {
      if (mainWindow) {
        mainWindow.setPosition(res.appX, res.appY);
        mainWindow.setSize(mainWidth, mainHeight);
      }
    });
  });

  //登录窗口
  ipcMain.on('minimize-login', () => {
    if(loginWindow){
      loginWindow.minimize();
    }
  });
  ipcMain.on('move-login', (event, res) => {
    if (loginWindow) {
      loginWindow.setPosition(res.appX, res.appY)
      loginWindow.setSize(loginWidth, loginHeight)
    }
  })


  app.on('activate', function () {
    //  macOS 上，点击 dock 图标时通常会重新创建应用窗口，在
    // 当没有其他窗口打开时。
    if (BrowserWindow.getAllWindows().length === 0) {
      mainWindow =createMainWindow()
    }
  })
})

// 当所有窗口关闭时退出，除了 macOS。在 macOS 上，
// 应用程序及其菜单栏通常会保持活跃，直到用户显式使用 Cmd + Q 退出。
app.on('window-all-closed', () => {
  // if (process.platform !== 'darwin') {}
})

// 在这个文件中，你可以包含应用程序特定的主进程代码。
// 你也可以将它们放在单独的文件中并在这里引入。
